今天我將說明一些Bash中常用或重要的特殊符號
/)在windows中以反斜線(\)作為分隔
\)| 跳脫字元 | 擴充後的結果 |
|---|---|
| \a | 響鈴 |
| \b | 退格 |
| \e | 跳脫 |
| \f | 換頁 |
| \n | 換行 |
| \r | 回車 |
| \t | 水平製表符 |
| \v | 垂直製表符 |
| \ | 反斜縣 |
| ' | 單引號 |
| " | 雙引號 |
| \nnn | 八進位值為nnn的字元 |
| \xHH | 十六進位值為HH的字元 |
| \uHHHH | unicode為HHHH的字元 |
| \uHHHHHHHH | unicode為HHHHHHHH的字元 |
&): 使&前面的命令在背景執行,然後在前景執行&後面的命令若有多個
&則使除最後的命令外的命令在背景執行
若要使命令在背景,則單獨在結尾使用&
% [<jobID>])
fg %[jobID]
'',""): 將文字作為字串處理而不是檔名、命令名稱等
倒引號(
``)也能做到相同功能,不過已被棄用(deprecated)
! <num>).source這個命令的別名[[...]])$(cmd): 執行括號中命令,並返回結果echo $(whoami) # 等價於 echo <username>
&&: 當前面的命令執行成功時才執行後面的命令||: 當前面的命令執行成功時,後面的命令不會被執行~)
~: 獲取$HOME的值~/foo: 等價於$HOME/foo
~<user>/foo: 等價於的$HOME中的foo子目錄~+/foo: 等價於目前位置中的foo目錄{...}): 主要用於生成字串組合與範圍
premble+{COMMA_SEPARATED_TEXT}+postscript
// 字串組合(使用sed是為了將擴充的分隔符從空格改為換行)
$ echo I_use_{Arch,Ubuntu,Fedora,Redhat}_BTW | sed 's/\ /\n/g'
I_use_Arch_BTW
I_use_Ubuntu_BTW
I_use_Fedora_BTW
I_use_Redhat_BTW
//範圍生成: 語法為{x..y[..incr]},也可以用在for loop
$ for i in {1..10..2}
> do
> echo $i
> done
1
3
5
7
9
// 排列組合
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf
// 跟*(萬用字元)一起使用時,先解析花括號然後解析萬用字元
ls *.{jp{e,}g,png} # 可以巢狀括展
其實還有Shell Parameter Expansion,不過礙於篇幅只好等講SHELL script時再介紹
GNU manual
Wiki
Bash Script 語法解析. 各種單雙括弧、特殊符號語法 | by Vince | vswe | Medium